# 导入Document类，用于表示文档对象
from llama_index.core import Document

# 导入SentenceSplitter类，用于将文档按句子分割成节点
from llama_index.core.node_parser import SentenceSplitter

# 创建一个示例文档对象，包含文本内容和元数据信息
original_document1 = Document(
    text="人工智能是计算机科学的一个分支。它致力于创建能够执行通常需要人类智能的任务的系统。机器学习是人工智能的一个子领域。深度学习是机器",
    metadata={
        "source": "ai_introduction.txt",
        "category": "技术文档",
        "author": "专家",
    },
)
original_document2 = Document(
    text="学习的一个分支。人工智能是计算机科学的一个分支。它致力于创建能够执行通常需要人类智能的任务的系统。机器学习是人工智能的一个子领域。深度学习是机器学习的一个分支。",
    metadata={
        "source": "ai_introduction.txt",
        "category": "技术文档",
        "author": "专家",
    },
)
# 打印原始文档的标题
print("原始文档:")
# 打印文档的文本内容
print(f"内容: {original_document1.text}")
# 打印文档的元数据信息
print(f"元数据: {original_document1.metadata}")
# 打印文档内容的长度（字符数）
print(f"长度: {len(original_document1.text)} 字符")
# 打印空行用于分隔
print()

# 创建一个句子分割器，设置每个分块最大长度为50，重叠部分为5
text_splitter = SentenceSplitter(chunk_size=50, chunk_overlap=5)

# 使用分割器将文档分割成若干节点
nodes = text_splitter.get_nodes_from_documents([original_document1, original_document2])

# 打印分割后节点的数量
print(f"🔪 分割后生成了 {len(nodes)} 个节点:")
# 打印分隔线
print("-" * 50)

# 遍历每个节点，显示其详细信息
for i, node in enumerate(nodes, 1):
    # 打印节点编号
    print(f"节点 {i}:")
    # 打印节点的文本内容
    print(f"  内容: {node.text}")
    # 打印节点内容的长度（字符数）
    print(f"  长度: {len(node.text)} 字符")
    # 打印节点的元数据信息
    print(f"  元数据: {node.metadata}")
    # 打印节点的唯一ID
    print(f"  节点ID: {node.node_id}")
    # 打印空行用于分隔
    print()
